package br.org.pmjn.patrimonio.core.infrastructure.impl;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import br.org.pmjn.patrimonio.core.domain.grupo.Grupo;
import br.org.pmjn.patrimonio.core.domain.grupo.GrupoRepository;
import br.org.pmjn.patrimonio.core.domain.grupo.Subgrupo;

public class GrupoRepositoryImpl extends HibernateDaoSupport implements GrupoRepository {

	@Override
	public void salvar(Grupo grupo) {
       getHibernateTemplate().persist(grupo);
	}

	@Override
	public void salvar(Subgrupo subgrupo) {
	   getHibernateTemplate().persist(subgrupo);	
	}

	@Override
	public void atualizar(Grupo grupo) {
	   getHibernateTemplate().merge(grupo);

	}

	@Override
	public void atualizar(Subgrupo subgrupo) {
	   getHibernateTemplate().merge(subgrupo);

	}

	@Override
	public void deletar(Grupo grupo) {
	   getHibernateTemplate().delete(grupo);
	}

	@Override
	public void deletar(Subgrupo subgrupo) {
		   getHibernateTemplate().delete(subgrupo);
	}

	@Override
	public Grupo localizarGrupoPorCodigo(Integer id) {		
       return getHibernateTemplate().get(Grupo.class, id);
	}

	@Override
	public Subgrupo localizarSubGrupoPorCodigo(Integer id) {
		return getHibernateTemplate().get(Subgrupo.class, id);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Grupo> listarGrupos() {
		return getSession().createCriteria(Grupo.class).list();
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Subgrupo> listarSubgrupos() {
		return getSession().createCriteria(Subgrupo.class).list();
	}

}
